In many computer systems, peripheral devices are connected to the computing systems using interconnects. The interconnects may implement standard bus protocols, such as any of the Peripheral Component Interconnect (PCI) family of bus protocols. PCI express (PCIe) is an extension to PCI and has been used in most computer applications including enterprise servers, consumer personal computers (PC), communication systems, and industrial applications. PCIe uses a packet-based layered protocol, and is based on point-to-point topology, with a separate serial link connecting each endpoint device to a host.
A traditional PCIe device allows the host to access a small sized memory block of the device's memory, which prevents the host from accessing the rest of the device's memory. It is often desirable for the host to access the full memory space of an endpoint device for debugging, configuration or other purposes, while avoiding reserving a large memory space in the host memory.